//
//  ZLAntiShakeSwitch.h
//  PersonalOCTest
//
//  防呆UISwitch，支持单个开关防抖和全局开关互斥
//

#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN

@interface ZLAntiShakeSwitch : UISwitch

/// 防抖间隔时间，默认1.0秒
@property (nonatomic, assign) NSTimeInterval antiShakeInterval;

/// 是否启用全局互斥（一个开关点击后，其他开关需要等待），默认YES
@property (nonatomic, assign) BOOL enableGlobalMutex;

/// 开关标识符，用于区分不同的开关实例
@property (nonatomic, copy) NSString *switchIdentifier;

/// 自定义的值变化回调，会在防呆检查通过后调用
@property (nonatomic, copy) void(^valueChangedBlock)(ZLAntiShakeSwitch *antiShakeSwitch, BOOL isOn);

/// 便利构造方法
+ (instancetype)switchWithIdentifier:(NSString *)identifier;

/// 设置值变化回调
- (void)setValueChangedBlock:(void(^)(ZLAntiShakeSwitch *antiShakeSwitch, BOOL isOn))block;

/// 手动重置防呆状态（如果需要立即允许操作）
- (void)resetAntiShakeState;

/// 全局重置所有开关的防呆状态
+ (void)resetAllAntiShakeStates;

@end

NS_ASSUME_NONNULL_END